//package ctvc;
//
//import java.util.*;
//
//public class Main {
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int k = scanner.nextInt();
//        int n = scanner.nextInt();
//        ArrayList<ArrayList<Integer>> lists=new ArrayList<>();
//        int[] first=new int[k];
//        int[] end=new int[k];
//        int min,max;
//        for(int i=0;i<k;++i){
//            ArrayList<Integer> list=new ArrayList<>();
//            for(int j=0;j<n;++j){
//                list.add(scanner.nextInt());
//            }
//            lists.add(list);
//            first[i]=list.get(0);
//            end[i]=list.get(n-1);
//        }
//        Arrays.sort(first);
//        Arrays.sort(end);
//        min=first[0];
//        max=end[0];
////        System.out.println(min + "  "+max);
//        int left=min,right=min;
//        ArrayList<Integer> temp=new ArrayList<>();
//        for(int i=0;i<k;++i){
//            temp=lists.get(i);
//            for(int j=0;j<3;++j){
//                if(temp.contains(left)){
//                    continue;
//                }else{
//                    int index=Collections.binarySearch(temp,left);
//                    if(index<0){
//                        index=-index-1;
//                    }
////                    System.out.println("index="+index);
//                    right=temp.get(index);
//                    System.out.println(left+" "+right);
//                    return;
//                }
//            }
//        }
//
//
//    }
//
//}
//
//Android的四大组件有Activity，是一种展示型组件，也是唯一一个用户可以交互的组件；Service是一种计算型组件，常用于执行后台计算任务，但它其实也是运行在主线程，所以需要手动开辟子线程执行耗时任务。BroadcastReceiver是一种消息型组件，用于在不同的组件乃至不同的应用之间传递数据。ContentProvider是一种数据共享组件，用于向其他组件乃至应用提供共享数据，它常用于进行跨进程通信。
//
//        实现多线程的方式有四种，分别是1.定义继承自Thread类的实现类的对象
//        2.定义实现Rnanble接口的实现类的对象，将其作为参数传给Thread类，创建Thread对象。
//        3.定义实现Callable接口的实现类对象，这是唯一一种可以带返回值的线程创建方式
//        4.还可以使用线程池来创建线程
//
//
//        简单的键值对数据存储使用SharedPreferences存储
//        图片，文件可以采用文件存储
//        关系型数据可以使用SQLite数据库存储
//
//        Activity的生命周期方法有7个，分别是
//        1.onCreate:创建初始化，加载布局资源，只会回调一次
//        2.onStart:正在启动，此时Activity已经可见了，但是还没有处于前台，用户不可以与之交互
//        3.onResume：此时Activity已经处于前台，并且用户可以与之交互
//        4.onPause:此时Activity正在停止，不再处于前台，用户可见但不可与之交互
//        5.onStop:Activity即将停止，此后Activity对用户完全不可见
//        6.onDestory:销毁activity，生命周期结束
//        7.onRestart：Activity从用户不可见重新变为可见状态
//
//        前台进程：用户正在交互的进程，优先级最高
//        可视进程：用户可见但不一定处于前台的进程，如Activity的onPause状态
//        服务进程：在后台运行的进程
//        后台进程：如已经被执行onStop的activity，此时它不可见
//        空进程：不维持任何组件运行的进程
//        提高进程优先级的方法：
//        1.在创建服务时就设置其priority属性，指定优先级
//        2.调用startForeground方法可以把Service提升为前台进程
//
//        选用RelativeLayout相对布局，它可以减少布局的层次结构，优化布局的深度，减少绘制的时间。
